#include "graph.h"
#include<bits/stdc++.h>
using namespace std;
int mp[205][205];
int a[205],d[205],ans[205];
int lst,nw;
int dep[205],fa[205][30];
int n,r,x,y,z,col;
int h[205],cnt;
struct edge{int h,t,x,nxt;}e[505];
inline void add(int x,int y,int z){
    e[++cnt]={x,y,z,h[x]};
    h[x]=y;
}
inline int read(){
    int ans=0,w=1;char ch=getchar();
    while(ch<'0'||ch>'9'){if(ch=='-')w=-1;ch=getchar();}
    while(ch<='9'&&ch>='0'){ans=(ans<<3)+(ans<<1)+(ch^48);ch=getchar();}
    return ans*w;
}
int num;
void dfs(int x,int fx,int k){
    if(lst)z=LastRoad(),mp[fx][x]=z;
    if(Color()!=1)return num--,void();
    dep[x]=dep[fx]+1;fa[x][0]=fx;
    d[x]=NumberOfRoads();
    for(int i=1;i<=d[x];i++){
        if(i==x)continue;
        Move(i,5-k);
        int xx=++num;
        dfs(xx,x,5-k);
        Move(mp[x][xx],k);
    }
}
void Inspect(int R) {
    n=read(),col=read(),r=read();
    dfs(++num,0,2);
    for(int i=1;i<=20;i++)
        for(int j=1;j<=n;j++)
            fa[j][i]=fa[fa[j][i-1]][i-1];
    for(int i=1;i<=n;i++)ans[dep[i]]++;
    for(int i=1;i<=r;i++)Answer(i,ans[i]);
}